//传入的第一种情况： 一般传入的action是这样子的
const action = {
  add: (value) => {
    return { type: "add", payload: value };
  },
};
//传入的第二种情况：或者直接传入一个方法 action.add

//将每一个函数重写，用dispatch方法进行绑定
function bindActionCreator(action, dispatch) {
  return function () {
    return dispatch(action.call(this, ...arguments));
  };
}

export default function bindActionCreators(actions, dispatch) {
  if (typeof actions === "function") {
    return bindActionCreator(actions, dispatch);
  }
  //如果传入的不是一个方法，那么默认它传入的就是一个对象
  let boundActionCreators = {};
  for (let key in actions) {
    let actionItem = actions[key];
    boundActionCreators[key] = bindActionCreator(actionItem, dispatch);
  }
  return boundActionCreators;
}
